$(function () {
    $('#JS-logout').click(function () {
        $('#logout_form').submit();
    });
    window.common = {
        download: config.download,
        ajax: function (r) {
            var success = r.success;
            var error = r.error;
            r.success = function (data) {
                if (data.code == 1) {
                    success && success(data.data);
                } else if (data.code == -2) {
                    window.location.replace('/login');
                } else {
                    data.code != -4 && alert(data.errorMsg);
                    error && error(data);
                }
            };
            r.error = function (xhr, e, exception) {
                if (xhr.status == 403) {
                    window.location.replace('/login');
                    return;
                }
                if (xhr.status == 500) {
                    alert('系统繁忙，请稍后重试。');
                    error && error();
                    return;
                }
                var message = xhr && xhr.responseText ? xhr.responseText : exception.toString();
                alert(message);
                error && error();
            };
            return $.ajax(r);
        },
        previewImage: function (file, callback) {//file为plupload事件监听函数参数中的file对象,callback为预览图片准备完成的回调函数
            if (!file || !/image\//.test(file.type)) return; //确保文件是图片
            if (file.type == 'image/gif') {//gif使用FileReader进行预览,因为mOxie.Image只支持jpg和png
                var fr = new mOxie.FileReader();
                fr.onload = function () {
                    callback(fr.result);
                    fr.destroy();
                    fr = null;
                }
                fr.readAsDataURL(file.getSource());
            } else {
                var preloader = new mOxie.Image();
                preloader.onload = function () {
                    //preloader.downsize(550, 400);//先压缩一下要预览的图片,宽300，高300
                    var imgsrc = preloader.type == 'image/jpeg' ? preloader.getAsDataURL('image/jpeg', 80) : preloader.getAsDataURL(); //得到图片src,实质为一个base64编码的数据
                    callback && callback(imgsrc); //callback传入的参数为预览图片的url
                    preloader.destroy();
                    preloader = null;
                };
                preloader.load(file.getSource());
            }
        },
        //获取url中的参数
        getUrlParam: function (name) {
            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
            var r = window.location.search.substr(1).match(reg); //匹配目标参数
            if (r != null) return unescape(r[2]);
            return null; //返回参数值
        },
        getShowPrice: function (price) {
            var yu = price % 100;
            return (price - yu) / 100 + '.' + (yu > 9 ? '' : '0') + yu;
        },
        //元转为分
        yuan2fen: function (price) {
            if (price == null || price === '') {
                return 0;
            }
            var index = price.indexOf(".");
            if (index === -1) {
                price += "00";
            } else {
                if (price.length - (index + 1) > 2) {
                    price = price.substring(0, index + 1 + 2);
                } else if (price.length - (index + 1) == 2) {
                    // price=price
                } else if (price.length - (index + 1) < 2) {
                    price += (price.length - (index + 1)) == 1 ? "0" : "00";
                }
            }
            price = price.replace(".", "");
            return window.parseInt(price);
        }
    };
    //semantic
    $(".ui.dropdown").dropdown();
    $('.message .close').click(function () {
        $(this).closest('.message').transition('fade');
    });
    //环信
    var IM = {};
    IM.login = function (username, password, callback) {
        var options = {
            apiUrl: WebIM.config.apiURL,
            user: username,
            pwd: password,
            appKey: WebIM.config.appkey
        };
        this.conn.listen({
            onOpened: function (message) {
                var token = message.accessToken;
                $.cookie('webim_username', username, {expires: 1});
                $.cookie('webim_token', token, {expires: 1});
                callback.success();
            },
            onError: function (message) {
                callback.error();
            }
        });
        this.conn.open(options);
    };
    IM.conn = new WebIM.connection({
        https: WebIM.config.https,
        url: WebIM.config.xmppURL,
        isAutoLogin: WebIM.config.isAutoLogin,
        isMultiLoginSessions: WebIM.config.isMultiLoginSessions
    });
    IM.conn.listen({
        onOpened: function (message) {//连接成功回调
            console.log("onOpened---", message);
        },
        onClosed: function (message) {//连接关闭回调
        },
        onTextMessage: function (message) {//收到文本消息
            console.log("onTextMessage---", message);
            var data = message.data;
            typeof data === 'string' && (data = JSON.parse(data));
            if (data.type == 1) {

            }
            NotificationHandler.showNotification(data.message);
        },
        onOnline: function () {//本机网络连接成功
            console.log("onOnline---");
        },
        onOffline: function () {//本机网络掉线
            console.log("onOffline---");
        },
        onError: function (message) {//失败回调
            console.log("onError---", message);
        },
    });
    //token登录
    var username = $.cookie('webim_username');
    var token = $.cookie('webim_token');
    if ($('#JS-email').text() !== '' && username && token) {
        var options = {
            apiUrl: WebIM.config.apiURL,
            user: username,
            accessToken: token,
            appKey: WebIM.config.appkey
        };
        IM.conn.open(options);
    }
    window.IM = IM;
    //通知
    var NotificationHandler = {
        isNotificationSupported: 'Notification' in window,
        isPermissionGranted: function () {
            return Notification.permission === 'granted';
        },
        requestPermission: function () {
            //验证浏览器是否支持Notification，如果不支持打印提示信息并返回
            if (!this.isNotificationSupported) {
                console.log('当前浏览器不支持Notification API');
                return;
            }
            //该方法将会询问用户是否允许显示通知,不能由页面调用(onload)，必须由用户主动事件触发(onclick等)
            //当用户同意之后，再次调用该方法则无效，即该方法仅对Notification.Permission不为'granted'的时候起作用
            Notification.requestPermission(function (status) {
                //status是授权状态，如果用户允许显示桌面通知，则status为'granted'
                console.log('status: ' + status);
                //permission只读属性:
                //  default 用户没有接收或拒绝授权 不能显示通知
                //  granted 用户接受授权 允许显示通知
                //  denied  用户拒绝授权 不允许显示通知
                var permission = Notification.permission;
                console.log('permission: ' + permission);
            });
        },
        showNotification: function (msg) {
            if (!this.isNotificationSupported) {
                console.log('当前浏览器不支持Notification API');
                return;
            }
            if (!this.isPermissionGranted()) {
                console.log('当前页面未被授权使用Notification通知');
                return;
            }

            var n = new Notification(msg, {
                icon: '/images/logo.jpg',
                body: msg
            });
            data

            //onshow函数在消息框显示时会被调用
            //可以做一些数据记录及定时操作等
            n.onshow = function () {
                console.log('显示通知信息');
                //5秒后自动关闭消息框
                setTimeout(function () {
                    n.close();
                }, 5000);
            };

            //消息框被点击时被调用
            //可以打开相关的视图，同时关闭该消息框等操作
            n.onclick = function () {
                //opening the view...
                n.close();
            };

            //当有错误发生时会onerror函数会被调用
            //如果没有granted授权，创建Notification对象实例时，也会执行onerror函数
            n.onerror = function () {
                console.log('产生错误');
                //do something useful
            };

            //一个消息框关闭时onclose函数会被调用
            n.onclose = function () {
                console.log('关闭通知窗口');
                //do something useful
            };
        }
    };
    !NotificationHandler.isPermissionGranted() && NotificationHandler.requestPermission();
});